package com.ls.lserp.modules.custom.service;

import com.ls.lserp.common.persistence.Page;
import com.ls.lserp.common.service.CrudService;
import com.ls.lserp.common.utils.CollectionsUtils;
import com.ls.lserp.common.utils.StringUtils;
import com.ls.lserp.modules.custom.dao.SizeDao;
import com.ls.lserp.modules.custom.entity.Size;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
  * @ClassName: SizeService
  * @Description: 尺码尺寸保存 修改 删除
  * 
  * @author 曹学海
  * @date 2016年11月1日 下午3:06:41
  *
  */

@Service
@Transactional(readOnly = true)
public class SizeService extends CrudService<SizeDao, Size> {
	@Autowired
	
	// 尺码尺寸方法接口
	private SizeDao sizeDao;
	
    /**
      * @Title: findList
      * @Description: 一览查询
      * @param @param page
      * @param @param Size
      * @param @return
      * @return Page<Size> 
      * @throws
      */
    
    public Page<Size> findList(Page<Size> page, Size size) {
        
    	// 设置分页参数
    	size.setPage(page);
        
    	// 执行分页查询
        page.setList(sizeDao.findList(size));
        
        return page;
    }
    
	/**
	  * @Title: getSize
	  * @Description: 基本信息查询
	  * @param @param id
	  * @param @return
	  * @return Size 
	  * @throws
	  */
	
	public Size getSize(Long id){
	        
		    // 实力化实体类
			Size size=new Size();
	        
	    	// 执行查询，获取基本信息
			size=sizeDao.get(id);
	        
	        return size;
	    }



	/**
	  * @Title: saveSize
	  * @Description: 保存尺码尺寸
	  * @param @param size
	  * @return void 
	  * @throws
	  */
	
	@Transactional(readOnly = false)
	public void saveSize(Size size) {
		
		// 判断新建编辑
		//若为null 执行插入语句（新建）
		if (size.getId()==null){
			// 判断list是否为空
			if(!CollectionsUtils.isEmpty(size.getSizeList())){
				size.preInsert();
				int i =0;
			// 遍历赋值
	        for( Size  s: size.getSizeList() ){
	        		//创建人信息
	        		s.preInsert();
	        		s.setStyleCategoryCd(size.getStyleCategoryCd());
	        		s.setStyleFitCd(size.getStyleFitCd());
	        		s.setStyleSizeGroupCd(size.getStyleSizeGroupCd());
	        		s.setStyleSizeCd(size.getStyleSizeCd());
	        		s.setPropertyCd(size.getSizeList().get(i).getFitProperty().getPropertyCd());
	        		s.setPropertyValue(size.getSizeList().get(i).getFitProperty().getPropertyValue());
	        		s.setCreateBy(size.getCreateBy());
	        		s.setCreateDate(new Date());
	        		s.setUpdateBy(size.getUpdateBy());
	        		s.setUpdateDate(new Date());
	        		i++;
				}
	        
	        // 执行子项插入语句
	        sizeDao.insertList(size);
			}
			
		// 编辑
		}else{
			// 更新数据
			// 判断list是否为空
			if(!CollectionsUtils.isEmpty(size.getSizeList())){
				size.preUpdate();
				int i =0;
			// 遍历赋值
	        for( Size  s: size.getSizeList() ){
	        		//创建人信息
	        		s.preInsert();
	        		s.setId(size.getSizeList().get(i).getId());
	        		s.setStyleCategoryCd(size.getStyleCategoryCd());
	        		s.setStyleFitCd(size.getStyleFitCd());
	        		s.setStyleSizeGroupCd(size.getStyleSizeGroupCd());
	        		s.setStyleSizeCd(size.getStyleSizeCd());
	        		s.setPropertyCd(size.getSizeList().get(i).getFitProperty().getPropertyCd());
	        		s.setPropertyValue(size.getSizeList().get(i).getFitProperty().getPropertyValue());
	        		s.setEnableFlag(size.getEnableFlag());
	        		s.setVersion(size.getVersion());
	        		s.setUpdateBy(size.getUpdateBy());
	        		s.setUpdateDate(new Date());
	        		sizeDao.update(s);
	        		i++;
				}
	        
	        // 执行子项插入语句
			}
		}
		

		
	}

	/**
	  * @Title: deleteSize
	  * @Description: 删除分类(逻辑删除)
	  * @param @param size
	  * @return void 
	  * @throws
	  */
	
	@Transactional(readOnly = false)
	public void deleteSize(List<Size> list) {
		if(!CollectionsUtils.isEmpty(list)){
			int i =0;
		// 遍历赋值
        for( Size  s: list ){
        		//创建人信息
        		s.setId(list.get(i).getId());
        		// 执行逻辑删除
        		sizeDao.delete(s);
        		i++;
			}
		}
	}
	
	
	/**
	  * @Title: findSizeListChange
	  * @Description: 
	  * @param @param size
	  * @param @return
	  * @return List 
	  * @throws
	  */
	
	public List findSizeListChange(Size size){
		List<Size> sizeList = new  ArrayList <Size>();
		if(size.getId()!=null&&(StringUtils.isNotBlank(size.getStyleCategoryCd()))){
			sizeList = sizeDao.findSizeList(size);
		}else{
			sizeList = sizeDao.findCreateSizeList(size);
		}
		return sizeList;
	}
	
	public Size getCheckSize(String styleCategoryCd,String styleSizeGroupCd,String styleSizeCd,String styleFitCd) {
		
		// 实力化实体类
		Size size = new Size();
		size.setStyleCategoryCd(styleCategoryCd);
		size.setStyleSizeGroupCd(styleSizeGroupCd);
		size.setStyleSizeCd(styleSizeCd);
		size.setStyleFitCd(styleFitCd);
		
		
		// 通过量体代码和量体值查询是否重复
		return sizeDao.getCheckSize(size);
	}
}
